package com.example.spring.mapper;

import com.example.spring.domain.ProductDetails;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 产品详情Mapper接口
 */
@Mapper
public interface ProductDetailsMapperNew {

    /**
     * 根据ID查询产品详情
     * @param id 产品ID
     * @return 产品详情
     */
    ProductDetails selectById(@Param("id") Integer id);

    /**
     * 查询所有产品详情
     * @return 产品详情列表
     */
    List<ProductDetails> selectAll();

    /**
     * 根据条件查询产品详情
     * @param productDetails 查询条件
     * @return 产品详情列表
     */
    List<ProductDetails> selectByCondition(ProductDetails productDetails);

    /**
     * 插入产品详情
     * @param productDetails 产品详情
     * @return 影响行数
     */
    int insert(ProductDetails productDetails);

    /**
     * 更新产品详情
     * @param productDetails 产品详情
     * @return 影响行数
     */
    int update(ProductDetails productDetails);

    /**
     * 根据ID删除产品详情
     * @param id 产品ID
     * @return 影响行数
     */
    int deleteById(@Param("id") Integer id);

    /**
     * 根据省份查询产品详情
     * @param province 省份
     * @return 产品详情列表
     */
    List<ProductDetails> selectByProvince(@Param("province") String province);

    /**
     * 根据区域查询产品详情
     * @param region 区域
     * @return 产品详情列表
     */
    List<ProductDetails> selectByRegion(@Param("region") String region);

    /**
     * 根据客户姓名查询产品详情
     * @param customerName 客户姓名
     * @return 产品详情列表
     */
    List<ProductDetails> selectByCustomerName(@Param("customerName") String customerName);

    /**
     * 统计每个省份的客户数量
     * @return 省份客户数量统计
     */
    List<com.example.spring.Dto.ProvinceCustomerCountDTO> countCustomersByProvince();

    /**
     * 获取客户数量前10的省份
     * @return 前10省份客户数量统计
     */
    List<com.example.spring.Dto.ProvinceCustomerCountDTO> getTop10ProvincesByCustomerCount();
} 